package org.example.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.example.config.CookieConfig;
import org.example.dianguanjia.HttpUtils;
import org.example.entity.DgjServiceList;
import org.example.entity.DgjServiceListType;
import org.example.entity.IesService;
import org.example.mapper.DgjServiceListMapper;
import org.example.mapper.DgjServiceListTypeMapper;
import org.example.mapper.IesServiceMapper;
import org.example.utils.SnowFlake;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * ============================================================<br>
 * <p> ProjectName ：spiderAdapter </p>
 * <p> @author dongjianzhao </p>
 * <p> @date 2023/3/21 </p>
 * <p> @version ：1.0 </p>
 * ============================================================<br>
 * <p>
 * IesService
 * </p>
 * ============================================================<br>
 */
@Service
@Slf4j
public class IesServiceImpl {
    /**
     * 服务商列表的数据
     */
    String selectPage="http://222.223.186.60:18020/energy-server/v1/restServiceInfoController/selectPage";
    String cookie= CookieConfig.COOKIE;
    @Autowired
    private DgjServiceListMapper dgjServiceListMapper;
    @Autowired
    private DgjServiceListTypeMapper dgjServiceListTypeMapper;
    @Autowired
    private IesServiceMapper iesServiceMapper;
    public void spider() {
        SnowFlake sf=new SnowFlake(2,3);
            List<Map<String, Object>> list = getServiceList(sf);
    }

    private List<Map<String, Object>> getServiceList(SnowFlake sf) {
        Map<String,Object> param=new HashMap<>();
        param.put("currentPageNum" ,1);
        //页面容量
        param.put("pageSize",300);
        param.put("pageFlag",true);
        param.put("servicerName","");
        param.put("servicerNo","");
        param.put("servicerStatus","");
        param.put("servicerType","");

        String s= HttpUtils.httpPost(selectPage,param,cookie);
        JSONObject parse = (JSONObject) JSONObject.parse(s);
        JSONArray list = (JSONArray) parse.get("data");
        list.forEach(f->{
            DgjServiceList dgj=new DgjServiceList();
            BeanUtil.copyProperties(f,dgj);
            dgj.setServicerIds(dgj.getServicerId());
            dgj.setServicerId(sf.nextId()+"");
            log.info("bean:{}",JSONObject.toJSONString(f));
            log.info("dgj:{}",JSONObject.toJSONString(dgj));
            dgjServiceListMapper.insert(dgj);
            List<DgjServiceListType> types = dgj.getTypes();
            for(DgjServiceListType d:types ){
                dgjServiceListTypeMapper.insert(d);
            }
        });
        return null;
    }

    public void adapter() {
      List<DgjServiceList> list=  dgjServiceListMapper.selectAll();
        list.forEach(l->{
            String servicerName = l.getServicerName();
            Map<String,Object> param=new HashMap<>();
            param.put("servername",servicerName);
            List<IesService> iesServices = iesServiceMapper.selectByMap(param);
            IesService is=new IesService();
            if(iesServices!=null&&iesServices.size()>0){
                is=iesServices.get(0);
            }else {
                /**
                 * 服务商名称
                 */
                is.setServername(l.getServicerName());
                is.setServerid(Long.valueOf(l.getServicerId()));
            }
            /**
             * 服务商编码
             */
            is.setServiceencoded(l.getServicerNo());

            /**
             * 行业类别：
             1.农、林、牧、渔业
             2.工业
             3.建筑业
             4.交通运输、仓储和邮政业
             5.信息传输、计算机服务和软件业
             6.商业、住宿和餐饮业
             7.住宿和餐饮业
             8.金融业
             9.房地产业
             10.租赁和商务服务、居民服务和其它服务业
             11.公共事业及管理组织
             */
              is.setTradecode(l.getBusinessType());
            /**
             * 经济类型编码：
             合资
             个体
             全民
             集体
             私营
             合作
             外资
             股份
             其它
             */
             is.setEconomictypecode(l.getEconomicType());
            /**
             * 服务类型编码：
             1.运维服务商
             2.检测/试验服务商
             3.安装服务商
             4.工程服务商
             目前只有“运维服务商”
                先默认 1
             */
            is.setServerprocode("01");
            String servicerIds = l.getServicerIds();
            Map<String,Object> param2=new HashMap<>();
            param2.put("servicerId",servicerIds);
            List<DgjServiceListType> dgjServiceListTypes = dgjServiceListTypeMapper.selectByMap(param2);
            StringBuilder serverprocodes=new StringBuilder();
            for (DgjServiceListType d:dgjServiceListTypes){
                serverprocodes.append(d.getServicerType()).append(",");
            }
            String substring = serverprocodes.substring(0, serverprocodes.length() - 1);
            is.setServerprocodes(substring);
            /**
             * 社会信用代码
             */
             is.setSocialunifiedcreditcode(l.getCreditCode());
            /**
             * 企业法人
             */
             is.setEntlegalper(l.getLegalPerson());
            /**
             * 注册地址
             */
              is.setCompanyadd(l.getAddRegister());
            /**
             * 经营地址
             */
             is.setManageadd(l.getAddBusiness());
            /**
             * 营业执照（附件地址）
             */
              is.setBusinessurl("");
            /**
             * 检测资质（附件地址）
             */
             is.setTestingurl("");
            /**
             * 安装资质（附件地址）
             */
             is.setInstallurl("");
            /**
             * 营业执照（附件名称）
             */
            is.setBusinessname("");
            /**
             * 检测资质（附件名称）
             */
            is.setTestingname("");
            /**
             * 安装资质（附件名称）
             */
            is.setInstallname("");
            /**
             * 中级员工人数
             */
            is.setInterstaff(0);
            /**
             * 高级员工人数
             */
            is.setSeniorstaff(0);
            /**
             * 服务商状态编码：
             1.建档
             2.启用
             3.暂停
             4.停用质保结算
             5.注销

             */
            is.setServerstatus(l.getServicerStatus());
            /**
             * 结算模式编码：
             1.正常
             2.加盟商
             3.一次性结算
             4.线上服务
             */
             is.setSettlemodecode(l.getSettlModel());
            /**
             * 上级服务商：顶级为综合能源公司，其它服务商为下级，查询是全部按照模糊查询
             */
            is.setParentserverid(0);
            /**
             * 是否具备监控中心
             */
            is.setIsmonitoringcenter("");
            /**
             * 开户银行
             */
             is.setDepositbank("");
            /**
             * 开户行账号
             */
             is.setDepositbankaccount("");
            /**
             * 联系人
             */
             is.setContactperson("");
            /**
             * 联系人电话
             */
             is.setContactphone("");
            /**
             * 组织机构全路径
             */
             is.setOrgpath("");
            if(iesServices!=null&&iesServices.size()>0){
                UpdateWrapper<IesService> updateWrapper = new UpdateWrapper<>();
                updateWrapper.eq("serverId",is.getServerid());
                iesServiceMapper.update(is, updateWrapper);
               // iesServiceMapper.updateByServerId(is);
            }else {
                iesServiceMapper.insert(is);
            }
        });
    }
}
